﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Dominio;

namespace HotelGUI
{
    public partial class ConsultaDisponibilidadHabitaciones : Form
    {
        ISistema sistema = Dominio.Fabrica.getSistema();
        private string ini;
        private string fin;

        public ConsultaDisponibilidadHabitaciones(DateTime fchini, DateTime fchfin)
        {
            InitializeComponent();
            ConsultaDisponibilidadHabitaciones_Load();
            dtpFechaCheckIn.Value = fchini;
            dtpFechaCheckOut.Value = fchfin;
            ini = fchini.Year.ToString();
            if (int.Parse(fchini.Month.ToString()) < 10)
                ini = ini + "0" + fchini.Month.ToString();
            else
                ini = ini + fchini.Month.ToString();
            if (int.Parse(fchini.Day.ToString()) < 10)
                ini = ini + "0" + fchini.Day.ToString();
            else
                ini = ini + fchini.Day.ToString();
            fin = fchfin.Year.ToString();
            if (int.Parse(fchfin.Month.ToString()) < 10)
                fin = fin + "0" + fchfin.Month.ToString();
            else
                fin = fin + fchfin.Month.ToString();
            if (int.Parse(fchfin.Day.ToString()) < 10)
                fin = fin + "0" + fchfin.Day.ToString();
            else
                fin = fin + fchfin.Day.ToString();
        }

        private void ConsultaDisponibilidadHabitaciones_Load()
        {
            // Esto es asi, hardcodeado
            cmbCapacidad.Items.Add("Simple");
            cmbCapacidad.Items.Add("Doble");
            cmbCapacidad.Items.Add("Triple");

            cmbCapacidad.SelectedIndex = 0;

            List<String[]> lstCategorias = sistema.traerCategorias(true);
            foreach (string[] l in lstCategorias)
            {
                cmbCategoria.Items.Add(l[0] + "-" + l[1]);
            }
            cmbCategoria.SelectedIndex = 0;

            List<String[]> lstcom = sistema.traerComodidades(true);
            foreach (string[] l in lstcom)
            {
                clbComodidades.Items.Add(l[0] + "-" + l[2]);
            }            
        }

        private void btnBuscar_Click(object sender, EventArgs e)
        {
            limpiarForm();

            string[] cad = cmbCategoria.SelectedItem.ToString().Split('-');
            int idcat = int.Parse(cad[0]);
            string cap = cmbCapacidad.SelectedItem.ToString();

            List<int> lstcom = new List<int>();
            foreach (object item in clbComodidades.CheckedItems)
            {
                string[] m = item.ToString().Split('-');
                lstcom.Add(int.Parse(m[0]));
            }
            
            List<String[]> lsthab = sistema.DarHabitacionesDisponibles(ini, fin, lstcom, idcat, cap);
            foreach (String[] hab in lsthab)
            {
                try
                {
                    ListViewItem item = lvHabitaciones.Items.Add(hab[0]);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(this, "Error Cargando las Habitaciones. " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }

        private void lvHabitaciones_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            string idhab = lvHabitaciones.SelectedItems[0].SubItems[0].Text;
            ((Reservas)this.Owner).setHabitacion(idhab);
            this.Close();
        }

        private void limpiarForm()
        {
            //lvHabitaciones.;
            //lvHabitaciones.Refresh();
        }
    }
}
